package com.chd.ledger_server.controller;

import com.chd.ledger_server.dao.ModelBasePointsDao;
import com.chd.ledger_server.entity.ModelBaseModels;
import com.chd.ledger_server.entity.ModelBasePoints;
import com.chd.ledger_server.service.ModelBaseModelsService;
import com.chd.ledger_server.domain.PageDto;
import com.chd.ledger_server.domain.Result;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 基础模型表(ModelBaseModels)表控制层
 * 包含有基点的部分接口
 *
 * @author makejava
 * @since 2025-07-18 19:54:16
 */
@RestController
@RequestMapping("modelBaseModels")
@CrossOrigin
public class ModelBaseModelsController {
    /**
     * 服务对象
     */
    @Resource
    private ModelBaseModelsService modelBaseModelsService;

    @Resource
    private ModelBasePointsDao modelBasePointsDao;

    /**
     * 分页查询
     *
     * @param pageDto 分页请求实体，仅包含ModelBaseModels实体+分页数据
     * @return ModelBaseModels列表
     */
    @PostMapping("/queryByPage")
    public Result queryByPage(@RequestBody PageDto pageDto) {
        PageInfo list = modelBaseModelsService.queryAllModelBaseModelssByPage(pageDto);
        if (list.getList().isEmpty()) return Result.buildFail("未查到相关信息！");
        return Result.buildSuccess(list);
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("/queryById")
    public Result queryById(Integer id) {
        ModelBaseModels entity = this.modelBaseModelsService.queryById(id);
        if (entity == null) {
            return Result.buildFail("未找到记录");
        }
        return Result.buildSuccess(entity);
    }

    /**
     * 根据基础热点交互点名称查询基点ID
     * @param pointName 基础热点表的交互点名称
     * @return 基点ID（pointId）
     */
    @GetMapping("/queryBasePointId")
    public Result queryBasePointId(String pointName) {
        if (pointName == null || pointName.trim().isEmpty()) {
            return Result.buildFail("交互点名称不能为空");
        }

        // 构造查询条件
        ModelBasePoints queryPoint = new ModelBasePoints();
        queryPoint.setPointName(pointName);

        // 查询符合条件的基点
        List<ModelBasePoints> basePoints = modelBasePointsDao.queryAll(queryPoint);
        if (basePoints.isEmpty()) {
            return Result.buildFail("未找到对应的基础热点记录");
        }

        // 返回第一个匹配的基点ID（若存在多个可根据业务调整）
        return Result.buildSuccess(basePoints.get(0).getPointId());
    }

    /**
     * 新增数据
     *
     * @param modelBaseModels 实体
     * @return 新增结果
     */
    @PostMapping("/add")
    public Result add(@RequestBody ModelBaseModels modelBaseModels) {
        ModelBaseModels result = this.modelBaseModelsService.insert(modelBaseModels);
        return Result.buildSuccess(result);
    }

    /**
     * 编辑数据
     *
     * @param modelBaseModels 实体
     * @return 编辑结果
     */
    @PostMapping("/edit")
    public Result edit(@RequestBody ModelBaseModels modelBaseModels) {
        ModelBaseModels result = this.modelBaseModelsService.update(modelBaseModels);
        if (result == null) {
            return Result.buildFail("更新失败，记录不存在");
        }
        return Result.buildSuccess(result);
    }

    /**
     * 删除数据
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @GetMapping("/deleteById")
    public Result deleteById(Integer id) {
        boolean success = this.modelBaseModelsService.deleteById(id);
        if (success) {
            return Result.buildSuccess("删除成功");
        } else {
            return Result.buildFail("删除失败，记录不存在");
        }
    }
}
